About Me

A headshot of Michael Schneider

Michael Schneider

PhD Candidate | Computer Science

Quote reading: I research, design, and develop tools for software engineering.
Coding Languages : C++, Javascript, Typescript, R, Java, C#, React.js, and Node.js
Coding Disciplines : Web (Full Stack), Embedded Systems, Data Science, AI, NLP
Research Areas : Developer Tools, Computer Science Education
Research Groups : Schoolwide Labs | Shepard Craft Tech Lab | Data Science for All | AI Institute


Publications

Note: Each citation follows the formating guidelines of its parent organization.

2023

Designing scaffolds to support students in debugging e-textiles
Abstract: My doctoral research focuses on the design of tools that scaffold the debugging process for students crafting e-textiles, a type of physical computing where circuits are woven together with conductive thread and textile fabrics. While this can be a creative medium for children to learn and experience computing, they struggle with locating errors in this mixed hardware/software environment - is the LED not turning on due to a fault in the circuit, an issue within the code, or some combination of the two? To address this issue, my study will follow a Design-Based Research approach to investigate and iterate on the design of debugging scaffolds. My primary scaffold is Circuit Check, an interactive web-based debugger that enables students to easily observe and test their hardware components. Preliminary findings from classroom observations have shown both the strong need for, and benefits of, Circuit Check’s approach of supporting debugging through system exploration.

PDF | Online Repository

Teachers’ Learning to Support Students During Science Inquiry: Managing Student Uncertainty in a Debugging Context
Abstract: This paper analyzes two teachers’ participation in professional learning (PL) activities designed to help them learn to support students when they face uncertainty during a computationally-rich science inquiry unit and their subsequent enactments of the unit. In this unit, students assemble a physical computing system (PCS) coupled with sensors to program and display streams of environmental data. Students inevitably encountered moments when they were “stuck” and required teacher help. The PL activities consisted of teachers taking on “student-hat/teacher-hat” roles attempting to solve buggy PCSs followed by a discussion. Analyses using a lens on teaching as improvisation illustrated how PL activities helped teachers develop an understanding of the PCS, confidence in enacting the unit, and pedagogical strategies for making in-the-moment decisions to support students facing uncertainties. Analyses also revealed teachers’ approaches for managing students' uncertainty level and the improvisation it required: one more constraining and one more expansive.

PDF | Online Repository

2022

Scaffolding the Debugging Process in Physical Computing with Circuit Check
Abstract: Physical computing projects provide rich opportunities for students to design, construct, and program machines that can sense and interact with the environment. However, students engaging in these activities often struggle to decipher the behavior of hardware components, software, and the interaction between the two. I report on the experiences of middle school students using a software tool, Circuit Check, designed to scaffold the debugging process in physical computing systems. Through think-aloud problem-solving exercises, I found Circuit Check facilitated rich instructor-student discussions. Incorporating these preliminary observations, I discuss design considerations for physical computing tools that support productive struggles and student sense-making.

PDF | Online Repository

Where's the Bug? Helping Students Find Errors in Physical Computing
Abstract: Popular platforms for teaching physical computing like the LilyPadArduino and Adafruit Circuit Playground have simplified program-ming and wiring, enabling students to quickly engineer physicalcomputing projects. But enabling students to rapidly design andbuild is a double-edged sword: Students can create functioningprototypes without fully understanding the underlying principles.With limited knowledge and experience, students struggle to locateand fix bugs, or errors, in their projects. Absent appropriate debug-ging tools, students rely on their instructor for locating errors, orworse, turn toward destructive tactics such as tearing apart andrebuilding their project, hoping the bug fixes itself. Students needtools targeted to their ability that scaffold debugging and help themlocate bugs in the mixed hardware/software environment of physi-cal computing. I developed Circuit Check to scaffold the debuggingprocess for students. It enables students to observe real-time sensordata and test hardware components through a novel adaptation ofthe traditional breakpoint for physical computing

PDF | Online Repository

2021

The Threadboard : Designing an e-textile rapid prototyping board
Abstract: E-textiles, which embed circuitry into textile fabrics, blend art and creative expression with engineering, making it a popular choice for STEAM classrooms [6, 12]. Currently, e-textile development relies on tools intended for traditional embedded systems, which utilize printed circuit boards and insulated wires. These tools do not translate well to e-textiles, which utilize fabric and uninsulated conductive thread. This mismatch of tools and materials can lead to an overly complicated development process for novices. In particular, rapid prototyping tools for traditional embedded systems are poorly matched for e-textile prototyping. This paper presents the ThreadBoard, a tool that supports rapid prototyping of e-textile circuits. With rapid prototyping, students can test circuit designs and identify circuitry errors prior to their sewn project. We present the design process used to iteratively create the ThreadBoard’s layout, with the goal of improving its usability for e-textile creators.

PDF | Online Repository

2020

A wearable meter that actively monitors the continuity of e-textile circuits as they are sewn
Abstract: The e-textile landscape has enabled creators to combine textile materiality with electronic capability. However, the tools that e-textile creators use have been adapted from traditional textile or hardware tools. This puts creators at a disadvantage, as e-textile projects present new and unique challenges that currently can only be addressed using a non-specialized toolset. This paper introduces the first iteration of a wearable e-textile debugging tool to assist novice engineers in problem solving e-textile circuitry errors. These errors are often only detected after the project is fully built and are resolved only by disassembling the circuit. Our tool actively monitors the continuity of the conductive thread as the user stitches, which enables the user to identify and correct circuitry errors as they create their project.

PDF | Online Repository

A Software Debugger for E-textiles and Arduino Microcontrollers
Abstract: Today's STEM classrooms have expanded the domain of computer science education from a basic two-toned terminal screen to now include helpful Integrated Development Environments(IDE) (BlueJ, Eclipse), block-based programming (MIT Scratch, Greenfoot), and even physical computing with embedded systems (Arduino, LEGO Mindstorms). But no matter which environment a student starts programming in, all students will eventually need help in finding and fixing bugs in their code. While the helpful IDE's have debugger tools built in (breakpoints for pausing your program, ways to view/modify variable values, and 'stepping' through code execution), in many of the other programming environments, students are limited to using print statements to try and 'see' what is happening inside their program.
Most students who learn to write code for Arduino microcontrollers will start within the Arduino IDE, but the official Arduino IDE does not currently provide any debugging tools. Instead, a student would have to move on to a professional IDE such as Atmel Studio or acquire a hardware debugger in order to add breakpoints or view their program's variables. But each of these options has a steep learning curve, additional costs, and can require complex configurations. Based on research of student debugging practices[3, 7] and our own classroom observations, we have developed an Arduino software library, called Arduino Debugger, which provides some of these debugging tools (ex. breakpoints) while staying within the official Arduino IDE. This work continues a previous library, (redacted), which focused on features specific to e-textiles development boards. The Arduino Debugger library has been modified to support not only e-textile boards (LilyPad, Adafruit Circuit Playground) but most AVR and ARM based Arduino boards. We are also in the process of testing a set of Debugging Code Templates to see how they might increase student adoption of debugging tools.

PDF | Online Repository

Pin Status: An Arduino Debugging Library for High School E-textile Courses
Abstract: When learning to code a student must learn both to create a program and then how to debug said program. Novices often start with print statements to help trace code execution and isolate logical errors. Eventually, they adopt advance debugger practices such as breakpoints, 'stepping' through code execution, and 'watching' variables as their values are updated. Unfortunately for students working with Arduino devices, there are no debugger tools built into the Arduino IDE. Instead, a student would have to move onto a professional IDE like Atmel Studio and/or acquire a hardware debugger. Except, these options have a steep learning curve and are not intended for a student who has just started to learn how to write code. I am developing an Arduino software library, called Pin Status, to assist novice programmers with debugging common logic errors and provide features specific to the e-textile microcontroller, Adafruit Circuit Playground Classic. These features include a breakpoint method which pauses an Arduino program's execution and offers, via Serial communication, a menu for viewing and/or updating the current value of digital pins and 'watched' variables. On the Adafruit Circuit Playground Classic, the library also uses on-board LEDs to show the current value of the digital pins (High/Low). This work has been funded by NSF STEM+C, award #1742081.

PDF | Online Repository

2015

A Study on the Efficacy of Sentiment Analysis in Author Attribution
Abstract: The field of authorship attribution seeks to characterize an author’s writing style well enough to determine whether he or she has written a text of interest. One subfield of authorship attribution, stylometry, seeks to find the necessary literary attributes to quantify an author’s writing style. The research presented here sought to determine the efficacy of sentiment analysis as a new stylometric feature, by comparing its performance in attributing authorship against the performance of traditional stylometric features. Experimentation, with a corpus of sci-fi texts, found sentiment analysis to have a much lower performance in assigning authorship than the traditional stylometric features.

PDF | Online Repository




Projects

Circuit Check

A diagram labeling Circuit Check's primary components, which include a button for pausing a project's code and a dashboard for observing sensors and testing actuators. A student is shown using Circuit Check to test an LED.

Circuit Check is an interactive debugging tool I developed to support novices in physical computing. Through its user-interface, novices can easily observe live sensor readings, test actuators, and even pause/unpause their running program. The development of Circuit Check was supported by the National Science Foundation under Award #1742081.